// // 给定一个字符串，统计出每个字母出现次数
const letterString = "hello world what a nice day";

let result = {};

for (let i = 0; i < letterString.length; i++) {
  // 判断是否为字母
  if (/^[a-zA-Z]$/.test(letterString[i])) {
    const lowerCaseLetter = letterString[i].toLowerCase();
    // in 是测试对象是否具有指定的属性，不是用于检测是否存在数组里，我用 lowerCaseLetter in Object.keys(result) ，是错误的，数组的键值永远指挥是数字啊
    // 这里用 result[lowerCaseLetter]也是可以的
    if (lowerCaseLetter in result) {
      result[lowerCaseLetter]++;
    } else {
      result[lowerCaseLetter] = 1;
    }
  }
}

console.table(result);

function countLetters(str) {
  // 创建一个空对象来保存字母计数
  var letterCount = {};

  // 将输入字符串转换为小写，以便不区分大小写
  var lowercaseStr = str.toLowerCase();

  // 遍历字符串中的每个字符
  for (var i = 0; i < lowercaseStr.length; i++) {
    var char = lowercaseStr[i];

    // 仅统计字母字符
    if (/[a-z]/.test(char)) {
      if (letterCount[char]) {
        // 如果该字母已经存在于计数对象中，则加一
        letterCount[char]++;
      } else {
        // 如果该字母不存在于计数对象中，则初始化为1
        letterCount[char] = 1;
      }
    }
  }

  return letterCount;
}

// var result = countLetters("Hello, World!");
// console.log(result);
